<?php
ini_set('include_path', '.');

require_once('env-parser.php');
require_once('file-util.php');
require_once('db-util.php');
require_once('app-util.php');
require_once('upgrade-app.php');

function admin_password_crypt($value)
{
    return md5($value);
}


$config_files = array( '/' => array( array('config.php.in', 'config.php')), '/cgi-bin' => array() );
$schema_files = array( 'schema.sql' => 'main' );
$reconf_schema_files = array( 'reconfigure.sql' => 'main' );
$remove_schema_files = array( 'remove.sql' => 'main' );

$psa_params = array (  );
$db_ids = array ( 'main' );
$web_ids = array ( 'cache', 'compile', 'icons', '/' );
$settings_params = array ( 'admin_name', 'admin_firstname', 'admin_lastname', 'admin_email', 'company_name', 'locale', 'offset', 'template', 'expire', 'monitor_traffic', 'operator_name', 'opdelete', 'boot_client', 'text_size', 'chat_width', 'chat_height', 'chat_op_width', 'chat_op_height', 'opchat_width', 'opchat_height', 'monitor_width', 'monitor_height', 'info_width', 'info_height', 'initiate_width', 'initiate_height', 'chat_hold', 'session_timeout', 'tracker_refresh', 'traffic_timeout', 'traffic_newvisit', 'chat_refresh', 'chat_timeout', 'cobrowse_refresh', 'monitor_refresh', 'live_timeout', 'initiate_timeout' );
$settings_enum_params = array ( 'locale' => array( 'da-DK' => 'dansk', 'nl-NL' => 'dutch', 'en-US' => 'english', 'pt-PT' => 'portuguese', 'es-ES' => 'spanish' ), 'template' => array( 'G' => 'G', 'Bliss' => 'Bliss' ), 'monitor_traffic' => array( 'true' => 'true', 'false' => 'false' ), 'opdelete' => array( 'true' => 'true', 'false' => 'false' ), 'boot_client' => array( 'true' => 'true', 'false' => 'false' ) );
$crypt_settings_params = array ( 'admin_password' );

$psa_modify_hash = get_psa_modify_hash($psa_params);
$db_modify_hash = get_db_modify_hash($db_ids);
$web_modify_hash = get_web_modify_hash($web_ids);
$settings_modify_hash = get_settings_modify_hash($settings_params);
$settings_enum_modify_hash = get_settings_enum_modify_hash($settings_enum_params);
$crypt_settings_modify_hash = get_crypt_settings_modify_hash($crypt_settings_params);

$additional_modify_hash = get_additional_modify_hash();

if(count($argv) < 2)
{
    print "Usage: configure (install | upgrade <version> | configure | remove)\n";
    exit(1);
}

$command = $argv[1];

if($command == "upgrade")
{
    if($argv[2] && $argv[3]){
	upgrade_app($argv[2], $argv[3], $config_files, $db_ids, $psa_modify_hash, $db_modify_hash, $settings_modify_hash, $crypt_settings_modify_hash, $settings_enum_modify_hash, $additional_modify_hash);
	exit(0);
    }
    else{
	print "Error: upgrade version or release not specified.\n";
	exit(1);
    }
}

if($command == "install")
{
    configure($config_files, $schema_files, $db_ids, $psa_modify_hash, $db_modify_hash, $settings_modify_hash, $crypt_settings_modify_hash, $settings_enum_modify_hash, $additional_modify_hash);
    exit(0);
}

if($command == "remove")
{
    remove_app($remove_schema_files, $db_ids, $psa_modify_hash, $db_modify_hash, $settings_modify_hash, $crypt_settings_modify_hash, $settings_enum_modify_hash, $additional_modify_hash);
    exit(0);
}

if($command == "configure")
{
    configure($config_files, $reconf_schema_files, $db_ids, $psa_modify_hash, $db_modify_hash, $settings_modify_hash, $crypt_settings_modify_hash, $settings_enum_modify_hash, $additional_modify_hash);
    exit(0);
}

print "Error: unknown command $command.\n";
exit(1);

?>